{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d22f3eab",
   "metadata": {},
   "source": [
    "# 1. requests(让HTTPS服务人民)"
   ]
  },
  {
   "cell_type": "code",
   "id": "3b7e1ee6",
   "metadata": {},
   "outputs": [],
   "source": [
    "import requests"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e91dddc1",
   "metadata": {},
   "source": [
    "* r 是指response"
   ]
  },
  {
   "cell_type": "code",
   "id": "1999ceeb",
   "metadata": {},
   "outputs": [],
   "source": [
    "import requests\n",
    "r = requests.get(\"https://cn.bing.com/events\")"
   ]
  },
  {
   "cell_type": "code",
   "id": "353aa801",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "200"
      ]
     },
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.status_code"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ecc0fbf",
   "metadata": {},
   "source": [
    "* r.content\n",
    "> 1. 可以获取请求数据內容（观察数据页面形态 HTML,Json）\n",
    "> 2. b 是指 bytes：二进制文件\n",
    "* r.json()"
   ]
  },
  {
   "cell_type": "code",
   "id": "00f598a2",
   "metadata": {},
   "outputs": [],
   "source": [
    "r = requests.get(\"https://httpbin.org\")"
   ]
  },
  {
   "cell_type": "code",
   "id": "bb0568bd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bound method Response.json of <Response [200]>>"
      ]
     },
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json"
   ]
  },
  {
   "cell_type": "code",
   "id": "918893f8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'<!DOCTYPE html>\\n<html lang=\"en\">\\n\\n<head>\\n    <meta charset=\"UTF-8\">\\n    <title>httpbin.org</title>\\n    <link href=\"https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700\"\\n        rel=\"stylesheet\">\\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"/flasgger_static/swagger-ui.css\">\\n    <link rel=\"icon\" type=\"image/png\" href=\"/static/favicon.ico\" sizes=\"64x64 32x32 16x16\" />\\n    <style>\\n        html {\\n            box-sizing: border-box;\\n            overflow: -moz-scrollbars-vertical;\\n            overflow-y: scroll;\\n        }\\n\\n        *,\\n        *:before,\\n        *:after {\\n            box-sizing: inherit;\\n        }\\n\\n        body {\\n            margin: 0;\\n            background: #fafafa;\\n        }\\n    </style>\\n</head>\\n\\n<body>\\n    <a href=\"https://github.com/requests/httpbin\" class=\"github-corner\" aria-label=\"View source on Github\">\\n        <svg width=\"80\" height=\"80\" viewBox=\"0 0 250 250\" style=\"fill:#151513; color:#fff; position: absolute; top: 0; border: 0; right: 0;\"\\n            aria-hidden=\"true\">\\n            <path d=\"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z\"></path>\\n            <path d=\"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2\"\\n                fill=\"currentColor\" style=\"transform-origin: 130px 106px;\" class=\"octo-arm\"></path>\\n            <path d=\"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z\"\\n                fill=\"currentColor\" class=\"octo-body\"></path>\\n        </svg>\\n    </a>\\n    <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"position:absolute;width:0;height:0\">\\n        <defs>\\n            <symbol viewBox=\"0 0 20 20\" id=\"unlocked\">\\n                <path d=\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z\"></path>\\n            </symbol>\\n\\n            <symbol viewBox=\"0 0 20 20\" id=\"locked\">\\n                <path d=\"M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z\"\\n                />\\n            </symbol>\\n\\n            <symbol viewBox=\"0 0 20 20\" id=\"close\">\\n                <path d=\"M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z\"\\n                />\\n            </symbol>\\n\\n            <symbol viewBox=\"0 0 20 20\" id=\"large-arrow\">\\n                <path d=\"M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z\"\\n                />\\n            </symbol>\\n\\n            <symbol viewBox=\"0 0 20 20\" id=\"large-arrow-down\">\\n                <path d=\"M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z\"\\n                />\\n            </symbol>\\n\\n\\n            <symbol viewBox=\"0 0 24 24\" id=\"jump-to\">\\n                <path d=\"M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z\" />\\n            </symbol>\\n\\n            <symbol viewBox=\"0 0 24 24\" id=\"expand\">\\n                <path d=\"M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z\" />\\n            </symbol>\\n\\n        </defs>\\n    </svg>\\n\\n\\n    <div id=\"swagger-ui\">\\n        <div data-reactroot=\"\" class=\"swagger-ui\">\\n            <div>\\n                <div class=\"information-container wrapper\">\\n                    <section class=\"block col-12\">\\n                        <div class=\"info\">\\n                            <hgroup class=\"main\">\\n                                <h2 class=\"title\">httpbin.org\\n                                    <small>\\n                                        <pre class=\"version\">0.9.2</pre>\\n                                    </small>\\n                                </h2>\\n                                <pre class=\"base-url\">[ Base URL: httpbin.org/ ]</pre>\\n                            </hgroup>\\n                            <div class=\"description\">\\n                                <div class=\"markdown\">\\n                                    <p>A simple HTTP Request &amp; Response Service.\\n                                        <br>\\n                                        <br>\\n                                        <b>Run locally: </b>\\n                                        <code>$ docker run -p 80:80 kennethreitz/httpbin</code>\\n                                    </p>\\n                                </div>\\n                            </div>\\n                            <div>\\n                                <div>\\n                                    <a href=\"https://kennethreitz.org\" target=\"_blank\">the developer - Website</a>\\n                                </div>\\n                                <a href=\"mailto:me@kennethreitz.org\">Send email to the developer</a>\\n                            </div>\\n                        </div>\\n                        <!-- ADDS THE LOADER SPINNER -->\\n                        <div class=\"loading-container\">\\n                            <div class=\"loading\"></div>\\n                        </div>\\n\\n                    </section>\\n                </div>\\n            </div>\\n        </div>\\n    </div>\\n\\n\\n    <div class=\\'swagger-ui\\'>\\n        <div class=\"wrapper\">\\n            <section class=\"clear\">\\n                <span style=\"float: right;\">\\n                    [Powered by\\n                    <a target=\"_blank\" href=\"https://github.com/rochacbruno/flasgger\">Flasgger</a>]\\n                    <br>\\n                </span>\\n            </section>\\n        </div>\\n    </div>\\n\\n\\n\\n    <script src=\"/flasgger_static/swagger-ui-bundle.js\"> </script>\\n    <script src=\"/flasgger_static/swagger-ui-standalone-preset.js\"> </script>\\n    <script src=\\'/flasgger_static/lib/jquery.min.js\\' type=\\'text/javascript\\'></script>\\n    <script>\\n\\n        window.onload = function () {\\n            \\n\\n            fetch(\"/spec.json\")\\n                .then(function (response) {\\n                    response.json()\\n                        .then(function (json) {\\n                            var current_protocol = window.location.protocol.slice(0, -1);\\n                            if (json.schemes[0] != current_protocol) {\\n                                // Switches scheme to the current in use\\n                                var other_protocol = json.schemes[0];\\n                                json.schemes[0] = current_protocol;\\n                                json.schemes[1] = other_protocol;\\n\\n                            }\\n                            json.host = window.location.host;  // sets the current host\\n\\n                            const ui = SwaggerUIBundle({\\n                                spec: json,\\n                                validatorUrl: null,\\n                                dom_id: \\'#swagger-ui\\',\\n                                deepLinking: true,\\n                                jsonEditor: true,\\n                                docExpansion: \"none\",\\n                                apisSorter: \"alpha\",\\n                                //operationsSorter: \"alpha\",\\n                                presets: [\\n                                    SwaggerUIBundle.presets.apis,\\n                                    // yay ES6 modules \\xe2\\x86\\x98\\n                                    Array.isArray(SwaggerUIStandalonePreset) ? SwaggerUIStandalonePreset : SwaggerUIStandalonePreset.default\\n                                ],\\n                                plugins: [\\n                                    SwaggerUIBundle.plugins.DownloadUrl\\n                                ],\\n            \\n            // layout: \"StandaloneLayout\"  // uncomment to enable the green top header\\n        })\\n\\n        window.ui = ui\\n\\n        // uncomment to rename the top brand if layout is enabled\\n        // $(\".topbar-wrapper .link span\").replaceWith(\"<span>httpbin</span>\");\\n        })\\n    })\\n}\\n    </script>  <div class=\\'swagger-ui\\'>\\n    <div class=\"wrapper\">\\n        <section class=\"block col-12 block-desktop col-12-desktop\">\\n            <div>\\n\\n                <h2>Other Utilities</h2>\\n\\n                <ul>\\n                    <li>\\n                        <a href=\"/forms/post\">HTML form</a> that posts to /post /forms/post</li>\\n                </ul>\\n\\n                <br />\\n                <br />\\n            </div>\\n        </section>\\n    </div>\\n</div>\\n</body>\\n\\n</html>'"
      ]
     },
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.content"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb4d7149",
   "metadata": {},
   "source": [
    "* 3.payload\n",
    "\n",
    "使用payload来实现请求数据传递"
   ]
  },
  {
   "cell_type": "code",
   "id": "1664c021",
   "metadata": {},
   "outputs": [],
   "source": [
    "payload ={\n",
    "    'name': 'harjen',\n",
    "    'JOB': 'IT'\n",
    "}\n",
    "r =requests.get(\"http://httpbin.org/get\",params = payload)"
   ]
  },
  {
   "cell_type": "code",
   "id": "d7e11b16",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Response [200]>"
      ]
     },
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r"
   ]
  },
  {
   "cell_type": "code",
   "id": "9b97f800",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'http://httpbin.org/get?name=harjen&JOB=IT'"
      ]
     },
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.url"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c82cb60c",
   "metadata": {},
   "source": [
    "# 2. face++detect"
   ]
  },
  {
   "cell_type": "code",
   "id": "5f3d9849",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 1. 准备base url（对应该功能的url连接）\n",
    "face_detect_url = \"https://api-cn.faceplusplus.com/facepp/v3/detect\"\n",
    " \n",
    "# 2.准备参数数据\n",
    "payload = {\n",
    "    'api_key':'iFunMsDgsjGWluC2dute5E7jpaBYrlVI',\n",
    "    'api_secret':'A0tYfYO1sdLKEjUSZVDbe4Rh49lbLsmn',\n",
    "    'image_url':'https://img0.baidu.com/it/u=4122447358,1134193794&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',\n",
    "    'return_landmark':1,\n",
    "    'return_attributes':'gender,age,smiling,emotion'\n",
    "}\n",
    "\n",
    "# 3. 检查调用的请求方法\n",
    "# 4. 请求人脸数据\n",
    "r =  requests.post(url = face_detect_url,params=payload)"
   ]
  },
  {
   "cell_type": "code",
   "id": "7bac69a6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Response [200]>"
      ]
     },
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r"
   ]
  },
  {
   "cell_type": "code",
   "id": "1c19256c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'request_id': '1646749644,1970d82d-7312-418c-9abe-de80c9a5647c',\n",
       " 'time_used': 232,\n",
       " 'faces': [{'face_token': '867b3f7f92c8725bea9ba3ffafdfec8e',\n",
       "   'face_rectangle': {'top': 195, 'left': 103, 'width': 296, 'height': 296},\n",
       "   'landmark': {'contour_chin': {'x': 246, 'y': 491},\n",
       "    'contour_left1': {'x': 117, 'y': 240},\n",
       "    'contour_left2': {'x': 115, 'y': 273},\n",
       "    'contour_left3': {'x': 117, 'y': 306},\n",
       "    'contour_left4': {'x': 123, 'y': 340},\n",
       "    'contour_left5': {'x': 134, 'y': 371},\n",
       "    'contour_left6': {'x': 149, 'y': 401},\n",
       "    'contour_left7': {'x': 166, 'y': 429},\n",
       "    'contour_left8': {'x': 186, 'y': 456},\n",
       "    'contour_left9': {'x': 211, 'y': 480},\n",
       "    'contour_right1': {'x': 384, 'y': 240},\n",
       "    'contour_right2': {'x': 384, 'y': 274},\n",
       "    'contour_right3': {'x': 382, 'y': 308},\n",
       "    'contour_right4': {'x': 375, 'y': 342},\n",
       "    'contour_right5': {'x': 364, 'y': 374},\n",
       "    'contour_right6': {'x': 348, 'y': 403},\n",
       "    'contour_right7': {'x': 330, 'y': 431},\n",
       "    'contour_right8': {'x': 309, 'y': 458},\n",
       "    'contour_right9': {'x': 282, 'y': 481},\n",
       "    'left_eye_bottom': {'x': 187, 'y': 243},\n",
       "    'left_eye_center': {'x': 188, 'y': 238},\n",
       "    'left_eye_left_corner': {'x': 161, 'y': 239},\n",
       "    'left_eye_lower_left_quarter': {'x': 173, 'y': 242},\n",
       "    'left_eye_lower_right_quarter': {'x': 201, 'y': 243},\n",
       "    'left_eye_pupil': {'x': 187, 'y': 235},\n",
       "    'left_eye_right_corner': {'x': 215, 'y': 242},\n",
       "    'left_eye_top': {'x': 188, 'y': 226},\n",
       "    'left_eye_upper_left_quarter': {'x': 173, 'y': 230},\n",
       "    'left_eye_upper_right_quarter': {'x': 203, 'y': 231},\n",
       "    'left_eyebrow_left_corner': {'x': 137, 'y': 222},\n",
       "    'left_eyebrow_lower_left_quarter': {'x': 156, 'y': 219},\n",
       "    'left_eyebrow_lower_middle': {'x': 178, 'y': 218},\n",
       "    'left_eyebrow_lower_right_quarter': {'x': 201, 'y': 220},\n",
       "    'left_eyebrow_right_corner': {'x': 226, 'y': 218},\n",
       "    'left_eyebrow_upper_left_quarter': {'x': 152, 'y': 200},\n",
       "    'left_eyebrow_upper_middle': {'x': 178, 'y': 196},\n",
       "    'left_eyebrow_upper_right_quarter': {'x': 204, 'y': 201},\n",
       "    'mouth_left_corner': {'x': 180, 'y': 360},\n",
       "    'mouth_lower_lip_bottom': {'x': 246, 'y': 413},\n",
       "    'mouth_lower_lip_left_contour1': {'x': 209, 'y': 387},\n",
       "    'mouth_lower_lip_left_contour2': {'x': 194, 'y': 386},\n",
       "    'mouth_lower_lip_left_contour3': {'x': 214, 'y': 405},\n",
       "    'mouth_lower_lip_right_contour1': {'x': 286, 'y': 388},\n",
       "    'mouth_lower_lip_right_contour2': {'x': 299, 'y': 388},\n",
       "    'mouth_lower_lip_right_contour3': {'x': 278, 'y': 406},\n",
       "    'mouth_lower_lip_top': {'x': 247, 'y': 398},\n",
       "    'mouth_right_corner': {'x': 314, 'y': 362},\n",
       "    'mouth_upper_lip_bottom': {'x': 247, 'y': 370},\n",
       "    'mouth_upper_lip_left_contour1': {'x': 235, 'y': 359},\n",
       "    'mouth_upper_lip_left_contour2': {'x': 207, 'y': 357},\n",
       "    'mouth_upper_lip_left_contour3': {'x': 213, 'y': 364},\n",
       "    'mouth_upper_lip_right_contour1': {'x': 260, 'y': 360},\n",
       "    'mouth_upper_lip_right_contour2': {'x': 287, 'y': 359},\n",
       "    'mouth_upper_lip_right_contour3': {'x': 281, 'y': 365},\n",
       "    'mouth_upper_lip_top': {'x': 247, 'y': 362},\n",
       "    'nose_contour_left1': {'x': 226, 'y': 245},\n",
       "    'nose_contour_left2': {'x': 215, 'y': 299},\n",
       "    'nose_contour_left3': {'x': 223, 'y': 333},\n",
       "    'nose_contour_lower_middle': {'x': 247, 'y': 343},\n",
       "    'nose_contour_right1': {'x': 270, 'y': 245},\n",
       "    'nose_contour_right2': {'x': 282, 'y': 297},\n",
       "    'nose_contour_right3': {'x': 274, 'y': 333},\n",
       "    'nose_left': {'x': 204, 'y': 319},\n",
       "    'nose_right': {'x': 296, 'y': 318},\n",
       "    'nose_tip': {'x': 245, 'y': 322},\n",
       "    'right_eye_bottom': {'x': 313, 'y': 242},\n",
       "    'right_eye_center': {'x': 312, 'y': 236},\n",
       "    'right_eye_left_corner': {'x': 285, 'y': 240},\n",
       "    'right_eye_lower_left_quarter': {'x': 299, 'y': 241},\n",
       "    'right_eye_lower_right_quarter': {'x': 327, 'y': 240},\n",
       "    'right_eye_pupil': {'x': 312, 'y': 233},\n",
       "    'right_eye_right_corner': {'x': 339, 'y': 237},\n",
       "    'right_eye_top': {'x': 312, 'y': 225},\n",
       "    'right_eye_upper_left_quarter': {'x': 297, 'y': 229},\n",
       "    'right_eye_upper_right_quarter': {'x': 327, 'y': 229},\n",
       "    'right_eyebrow_left_corner': {'x': 277, 'y': 217},\n",
       "    'right_eyebrow_lower_left_quarter': {'x': 302, 'y': 218},\n",
       "    'right_eyebrow_lower_middle': {'x': 326, 'y': 216},\n",
       "    'right_eyebrow_lower_right_quarter': {'x': 346, 'y': 220},\n",
       "    'right_eyebrow_right_corner': {'x': 365, 'y': 229},\n",
       "    'right_eyebrow_upper_left_quarter': {'x': 300, 'y': 201},\n",
       "    'right_eyebrow_upper_middle': {'x': 327, 'y': 197},\n",
       "    'right_eyebrow_upper_right_quarter': {'x': 352, 'y': 205}},\n",
       "   'attributes': {'gender': {'value': 'Male'},\n",
       "    'age': {'value': 44},\n",
       "    'smile': {'value': 100.0, 'threshold': 50.0},\n",
       "    'emotion': {'anger': 0.0,\n",
       "     'disgust': 0.0,\n",
       "     'fear': 0.0,\n",
       "     'happiness': 100.0,\n",
       "     'neutral': 0.0,\n",
       "     'sadness': 0.0,\n",
       "     'surprise': 0.0}}}],\n",
       " 'image_id': 'FEB9zbI59C/Zmcbl3Ir7xQ==',\n",
       " 'face_num': 1}"
      ]
     },
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "r.json()"
   ]
  },
  {
   "cell_type": "code",
   "id": "f8395d57",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "id": "16f65f4b",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
